package ufc.sd;

import java.util.List;
import java.util.Scanner;

import ufc.sd.dao.AlunoDAO;
import ufc.sd.dao.CursoDAO;
import ufc.sd.entities.Aluno;
import ufc.sd.entities.Curso;

public class Main {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);

		int opcaoEscolhida = 2;

		System.out.println("Welcome to Cassandra Student Course App");
		do {
			System.out.println("O que você deseja fazer?");
			System.out.println("1- Ver Dados Aluno por nome");
			System.out.println("2- Sair");
			System.out.println("3- Especial");
			System.out.println("4- Listar todos os alunos");
			System.out.println("5- Listar todos os cursos");
			System.out.println("6- Deletar Curso");
			System.out.println("7- Deletar Aluno");

			opcaoEscolhida = scanner.nextInt();

			switch (opcaoEscolhida) {
			case 1:
				showStudentInfoByName();
				break;
			case 3:
				System.out
						.println("BRUNO É DEMAIS DEMAIS DEMAIS DEMAIS DEMAIS :D");
				break;
			case 4:
				listStudents();
				break;
			case 5:
				listCourses();
				break;
			case 6:
				deleteCourse();
				break;
			case 7:
				deleteStudent();
				break;
			}
		} while (opcaoEscolhida != 2);

	}

	private static void showStudentInfoByName() {
		Scanner scanner = new Scanner(System.in);

		System.out
				.println("Qual a matricula do aluno que deseja obter informações:");
		try {
			Aluno alunoResult = AlunoDAO.getInstance().getByKey(
					scanner.nextLine());
			System.out.println("Aluno:" + alunoResult.getNomeCompleto());
			System.out.println("Nascimento:" + alunoResult.getDataNascimento());
			if (alunoResult.getCursoMatriculado() != null) {
				System.out.println("Curso:"
						+ alunoResult.getCursoMatriculado().getCodigo());
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("ERRO");
		}
	}

	private static void listStudents() {
		List<Aluno> alunos = AlunoDAO.getInstance().getAll();
		for (Aluno aluno : alunos) {
			try {
				System.out.println("Aluno:" + aluno.getNomeCompleto());
				System.out.println("Nascimento:" + aluno.getDataNascimento());
				System.out.println("Curso:"
						+ aluno.getCursoMatriculado().getCodigo());
			} catch (Exception e) {
			}
		}

	}

	private static void listCourses() {
		List<Curso> cursos = CursoDAO.getInstance().getAll();
		for (Curso curso : cursos) {
			System.out.println("Curso:" + curso.getNome());
			System.out.println("Centro:" + curso.getCentro());
		}
	}

	private static void deleteCourse() {

	}

	private static void deleteStudent() {
		Scanner scanner = new Scanner(System.in);

		System.out.println("Qual a matricula do aluno que deseja remover:");
		try {
			Aluno alunoResult = AlunoDAO.getInstance().getByKey(
					scanner.nextLine());
			AlunoDAO.getInstance().delete(alunoResult);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("ERRO");
		}
	}
}
